package com.module.ad.tengxun;

import android.app.Activity;
import android.os.Handler;

import com.module.privacy.module_ad.LogADUtils;
import com.module.privacy.module_ad.VideoAdListener;
import com.qq.e.ads.rewardvideo.RewardVideoAD;
import com.qq.e.ads.rewardvideo.RewardVideoADListener;
import com.qq.e.comm.util.AdError;

import java.util.Map;

/**
 * @author bsnl_yanxuwen
 * @date 2021/7/9 15:02
 * Description :
 * 激励视频
 */
public class TXVideoAd implements RewardVideoADListener {

    private final String TAG = "腾讯广告";
    private RewardVideoAD rewardVideoAD;
    private VideoAdListener listener;
    private Handler handler = new Handler();


    public static void loadVideoAd(Activity context, String posId, String userId, VideoAdListener listener) {
        new TXVideoAd().load(context, posId, userId, listener);
    }

    public void load(Activity context, String posId, String userId, VideoAdListener listener) {
        this.listener = listener;
        rewardVideoAD = new RewardVideoAD(context, posId, this, true);
        //暂时不需要服务验证
//        ServerSideVerificationOptions options = new ServerSideVerificationOptions.Builder()
//                .setCustomData("APP's custom data") // 设置激励视频服务端验证的自定义信息
//                .setUserId(userId) // 设置服务端验证的用户信息
//                .build();
//        rvad.setServerSideVerificationOptions(options);

        // 2. 加载激励视频广告
        rewardVideoAD.loadAD();
    }


    /**
     * 广告加载成功，可在此回调后进行广告展示，此时广告过期时间确定，可通过RewardVideoAD.getExpireTimestamp()获取
     */
    @Override
    public void onADLoad() {
        LogADUtils.d(TAG, "腾讯激励视频加载完成");
        if (rewardVideoAD != null) {
            rewardVideoAD.showAD();
        }
        handler.postDelayed(new Runnable() {
            @Override
            public void run() {
                if (listener != null) {
                    listener.onStart();
                }
            }
        }, 1000);
    }

    /**
     * 视频素材缓存成功，可在此回调后进行广告展示
     */
    @Override
    public void onVideoCached() {
        LogADUtils.d(TAG, "腾讯激励视频缓存完成");
    }

    /**
     * 激励视频广告页面展示，此后RewardVideoAD.hasShown()返回true
     */
    @Override
    public void onADShow() {
        LogADUtils.d(TAG, "腾讯激励视频开始");
    }

    /**
     * 激励视频广告曝光
     */
    @Override
    public void onADExpose() {

    }

    /**
     * 激励视频广告激励发放，若选择了服务端验证，可以通过 ServerSideVerificationOptions#TRANS_ID 键从 map 中获取此次交易的 id；若未选择服务端验证，则不需关注 map 参数。
     */
    @Override
    public void onReward(Map<String, Object> map) {
        LogADUtils.d(TAG, "腾讯激励视频奖金发放" + map);
        if (listener != null) {
            listener.onComplete();
        }
    }

    /**
     * 激励视频广告被点击
     */
    @Override
    public void onADClick() {

    }

    /**
     * 广告视频素材播放完毕
     */
    @Override
    public void onVideoComplete() {
        LogADUtils.d(TAG, "腾讯激励视频完成");
        handler.removeCallbacksAndMessages(null);
    }

    /**
     * 激励视频广告被关闭
     */
    @Override
    public void onADClose() {

    }

    /**
     * 广告流程出错，AdError中包含错误码和错误描述
     */
    @Override
    public void onError(AdError adError) {
        LogADUtils.d(TAG, "腾讯激励视频错误" + adError.getErrorMsg());

    }
}